﻿//┌───┬─┐ ------------------------------------------//
//│   │ │ Repulsion Function - AS2	   				//
//│○ ○│○│ AS desenvolvida por Fábio Lima. 2008/01	//
//└───┴─┘ fabio@fabiotnt.com - FlashFrameless Team  //
//--------------------------------------------------//
//
//Função de repulsão.

function addRepulsion( clipForce:MovieClip, arrClips:Array, repulsionForce:Number, repulsionVelocity:Number ){
	//
	//Declara variaveis da função.
	var maxRepulsion	:Number = 30;
	//
	//Loop de repulsão.
	for( var i = 0; i < arrClips.length; i++ ){
		//Declara variaveis do loop
		var repulsedClip	:MovieClip 	= arrClips[i];
		var actualX			:Number 	= repulsedClip._x;
		var actualY			:Number 	= repulsedClip._y;
		var distance		:Number 	= calcDistance( clipForce._x, clipForce._y, actualX, actualY );
		//Verifica se a repulsão passada não é forte demais.
		repulsionForce = Math.max( 0, Math.min( maxRepulsion, repulsionForce ) );
		//Calcula o angulo de repulsão.
		var repulsionAngle = Math.atan2( actualY - clipForce._y, actualX - clipForce._x );
		//Calcula a velocidade do projétil.
		var xspeed = repulsionForce*Math.cos( repulsionAngle ) + ( repulsedClip.initX - actualX )*repulsionVelocity;
		var yspeed = repulsionForce*Math.sin( repulsionAngle ) + ( repulsedClip.initY - actualY )*repulsionVelocity;
		//Aplica velocidade ao projétil.
		repulsedClip._x += xspeed;
		repulsedClip._y += yspeed;
		//Configurações adcionais para este projeto em especifico.
		if( clipForce == realAnchor_mc && !realAnchor_mc.passeomouse_mc._visible && booInited ){
			clipForce._rotation = ( Math.sqrt( Math.pow( arrClips[1]._x, 2 ) + Math.pow( arrClips[1]._y, 2 ) ) ) + 90;
		}
		repulsedClip.thumb._rotation = Math.atan2( repulsedClip._y, repulsedClip._x )*( 180/Math.PI );
	}
}

function calcDistance( startX, startY, endX, endY ){
	var distanceX = Math.pow( startX - endX, 2 );
	var distanceY = Math.pow( startY - endY, 2 );
	return Math.sqrt( distanceX + distanceY );
}